/*****************************************************************************
* file  : .c
*******************************************************************************/
#include "bsp.h"
#include "os_obj.h"
#include "bsp_i2s.h"
#include "bsp_wm8978.h"
#include "systask.h"
#include "common.h"
#include "math.h"

/*****************************************************************************
* @brief   const define
*****************************************************************************/


/*****************************************************************************
* @brief   function
*****************************************************************************/
int16_t i2s_dat_get(void *buff, int16_t len_req);

/*****************************************************************************
* @brief   music_play.
* @param   argument
* @return  none
* @ Pass/ Fail criteria: none
*****************************************************************************/
void music_play(void)
{  
	bsp_i2s_init(44100, I2S_DATABIT_16);
	
	WM8978_Init();
	
    for(;;)
	{
		if(sys_st.str_module != 8)
			break;
		
		osDelay(100);
		
		bsp_i2s_play(i2s_dat_get);
    }
}

/*****************************************************************************
* @brief   i2s data get.
* @param   buff len
* @return  none
* @ Pass/ Fail criteria: none
*****************************************************************************/
int16_t i2s_dat_get(void *buff, int16_t len_req)
{
	loop_n(len_req/2)
	{
		((uint16_t *)buff)[index] = sin((float)index / 5) * 20000;
	}
	
	return len_req;
}
